/// \file TextureDX9.h
/// \date 2012-12-08
/// \brief concrete class in DX9 that models a texture

#ifndef _TORUSPRORENDERING_RENDER_TEXTUREDX9_H__
#define _TORUSPRORENDERING_RENDER_TEXTUREDX9_H__

// DX9
#include <d3d9.h>
#include <d3dx9.h>

#include <Render/Include/Texture.h>
namespace Render
{

/// \brief concrete class in DX9 that models a texture 
class TextureDX9 : public Texture
{
    /// \brief RendererDx9 is the only one that can create, destroy and use this class 
    friend class RendererDX9;

private:
    // ========== INTERNAL METHODS ========== //
    
    /// \brief Constructor, receives the mesh info already created
    TextureDX9(LPDIRECT3DTEXTURE9 p3DTexture, D3DXIMAGE_INFO texture_info);
    
    /// \brief Destructor, releases the mesh
    virtual ~TextureDX9(void);

    LPDIRECT3DTEXTURE9 getTexture();
    
    // ========== ATTRIBUTES ========== //
    LPDIRECT3DTEXTURE9 texture;
    D3DXIMAGE_INFO texture_info;
    
};
};
#endif // _TORUSPRORENDERING_RENDER_TEXTUREDX9_H__
